﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using TCC_Hotel.Entidades;
using TCC_Hotel.Repositorio;
using System.Web.Caching;

namespace TCC_Hotel.Serviços.BDServices
{
    public class ParametroService
    {
        ParametroRepositorio repositorio = new ParametroRepositorio();

        /// <summary>
        /// Retorna os Parametros do banco de dados
        /// </summary>
        /// <returns>Lista com os Parametros</returns>
        public List<Parametros> RecuperarParametros()
        {
            return repositorio.RecuperarParametros();
        }

        /// <summary>
        /// edita os parametros do sistema
        /// </summary>
        /// <returns>true se editou ou false se não</returns>
        public bool EditarParametros(List<Parametros> Parametros)
        {
            return repositorio.EditarParametros(Parametros);
        }

        /// <summary>
        /// Verifica se os horarios tem a qnt de caracteres especificados
        /// </summary>
        /// <returns>true se editou ou false se não</returns>
        public bool VerificaHorarios(List<string> Horarios)
        {

            foreach (var item in Horarios)
            {
                if (item.Length < 8)
                {
                    return false;
                }

            }

            return true;
            
        }

        /// <summary>
        /// Verifica se a informação ja esta gravada em cache, se tiver recupera, 
        /// senao faz a consulta e grava em cache
        /// </summary>
        /// <returns>Lista de apartamentos</returns>
        public List<Parametros> ListarParametrosCache()
        {
            List<Parametros> parametros = new List<Parametros>();

            //Verifica se a informação esta guardada em cache
            if (HttpContext.Current.Cache.Get("Lista_Parametros") == null)
            {
                //Consulta as parametros no banco
                parametros = RecuperarParametros();

                //Armazena a lista de parametros em cache de 1 minuto para evitar muitas consultas ao banco
                HttpContext.Current.Cache.Add("Lista_Parametros", parametros, null,
                                 DateTime.Now.AddMinutes(5), Cache.NoSlidingExpiration, CacheItemPriority.High, null);

            }

           //caso essa informaçao ja estiver no cache
            else
            {
                //Resgata informação do cache
                parametros = (List<Parametros>)HttpContext.Current.Cache.Get("Lista_Parametros");

            }

            return parametros;
        }
    }
}